package com.cmw.auntapp.core.base.vo;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.cmw.auntapp.core.util.FastJsonUtil;

import java.util.List;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 数据结果集
 * @Auth 程明卫
 * @date 2021-04-26
 * @param
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DataResult  {
    /**
     * 结果状态 [true:成功, false : 失败]
     */
    private boolean success;
    /**
     * 消息内容
     */
    private String msg;
    /**
     * 错误码
     */
    private int code = SUCCESS_CODE;
    /**
     * 服务端返回数据
     */
    private Object datas;

    /**
     * 状态码：[1:成功]
     */
    public static final int SUCCESS_CODE = 1;
    /**
     * 状态码：[0:失败]
     */
    public static final int FAIULE_CODE = 0;

    /**
     * 将数据以Bean列表返回
     * @param clz Bean 对象Class
     * @param <T>
     * @return 返回Bean 列表
     */
    public <T> List<T>  getDataList(Class<T> clz) {
        JSONArray jsonArray = (JSONArray)datas;
        return FastJsonUtil.convertJsonToList(jsonArray.toString(), clz);
    }

    /**
     * 将JSON数据转换为Bean并返回
     * @param clz Bean 对象Class
     * @param <T>
     * @return 返回Bean 对象
     */
    public <T> T  getData(Class<T> clz) {
         if (null == datas) {
             return null;
         }
        JSONObject jsonObject = (JSONObject)datas;
        return FastJsonUtil.convertJsonToObj(jsonObject, clz);
    }
}
